From 28addd377575525eefb87c89ae6f60b8839e8861 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 24 May 2019 01:55:23 +0000 Subject: [PATCH] broadway: Disconnect from the frame clock The frame clock can no survive its surface, so we need to disconnect signal handlers. --- gdk/broadway/gdksurface-broadway.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gdk/broadway/gdksurface-broadway.c b/gdk/broadway/gdksurface-broadway.c index d8a0ffb44c..a0dbc3036b 100644 --- a/gdk/broadway/gdksurface-broadway.c +++ b/gdk/broadway/gdksurface-broadway.c @@ -184,6 +184,17 @@ connect_frame_clock (GdkSurface *surface) G_CALLBACK (on_frame_clock_after_paint), surface); } +static void +disconnect_frame_clock (GdkSurface *surface) +{ + GdkFrameClock *frame_clock = gdk_surface_get_frame_clock (surface); + + g_signal_handlers_disconnect_by_func (frame_clock, + on_frame_clock_before_paint, surface); + g_signal_handlers_disconnect_by_func (frame_clock, + on_frame_clock_after_paint, surface); +} + GdkSurface * _gdk_broadway_display_create_surface (GdkDisplay *display, GdkSurfaceType surface_type, @@ -254,6 +265,8 @@ _gdk_broadway_surface_destroy (GdkSurface *surface, impl = GDK_BROADWAY_SURFACE (surface); + disconnect_frame_clock (surface); + if (impl->node_data) g_array_unref (impl->node_data); if (impl->node_data_textures) -- 2.30.2